Lazy Loading এবং Eager Loading হল ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যেমন Hibernate বা JPA-তে ডাটাবেজ থেকে ডাটা রিট্রিভ করার দুটি ভিন্ন স্ট্র্যাটেজি। এগুলি ডাটা লোড করার সময় পারফরম্যান্স অপ্টিমাইজ করার জন্য ব্যবহৃত হয়। Spring ORM এর মাধ্যমে Hibernate বা JPA-তে এগুলিকে সহজেই কনফিগার করা যায়।
Hibernate বা JPA-তে @OneToMany
, @ManyToOne
, @OneToOne
, এবং @ManyToMany
রিলেশনশিপে Lazy এবং Eager Loading নির্ধারণ করা যায়।
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import java.util.List;
@Entity
public class Department {
@Id
private int id;
private String name;
@OneToMany(mappedBy = "department", fetch = jakarta.persistence.FetchType.LAZY)
private List<Employee> employees;
// Getter এবং Setter
}
উপরের উদাহরণে, fetch = FetchType.LAZY এর মাধ্যমে employees
তালিকা Lazy Loading হিসাবে কনফিগার করা হয়েছে। এর অর্থ, employees
অবজেক্ট ডাটাবেজ থেকে তখনই রিট্রিভ হবে, যখন এটি অ্যাক্সেস করা হবে।
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import java.util.List;
@Entity
public class Department {
@Id
private int id;
private String name;
@OneToMany(mappedBy = "department", fetch = jakarta.persistence.FetchType.EAGER)
private List<Employee> employees;
// Getter এবং Setter
}
উপরের উদাহরণে, fetch = FetchType.EAGER এর মাধ্যমে employees
তালিকা Eager Loading হিসাবে কনফিগার করা হয়েছে। এর অর্থ, Department
অবজেক্ট লোড করার সময়ই সমস্ত employees
ডাটা লোড হবে।
@ManyToOne(fetch = jakarta.persistence.FetchType.LAZY)
private Department department;
@ManyToOne(fetch = jakarta.persistence.FetchType.EAGER)
private Department department;
@OneToMany
এবং @ManyToMany
এর ডিফল্ট ফেচ মোড হল Lazy Loading।@ManyToOne
এবং @OneToOne
এর ডিফল্ট ফেচ মোড হল Eager Loading।ডিফল্ট ফেচ মোড পরিবর্তন করার জন্য fetch
প্যারামিটার ব্যবহার করতে হয়।
Spring ORM এ Lazy এবং Eager Loading কনফিগারেশন ডাটা লোডিং কৌশলকে নিয়ন্ত্রণ করতে সাহায্য করে, যা অ্যাপ্লিকেশনের কার্যকারিতা এবং মেমরি ব্যবহারের দক্ষতাকে উন্নত করে।
Read more